#ifndef ENTITY3D_H
#define ENTITY3D_H

#include <iostream>
using namespace std;

/**
 * Cabecera de la clase Entity3D que proporciona
 * la información básica para manejar
 * una entidad
 */
class Entity3D {
 public:
  // Constructores
  Entity3D () : _x(0), _y(0), _z(0), _name("") {}  // TODO Ver si se puede eliminar
  Entity3D (const int x, const int y, const int z, const string name) : _x(x), _y(y), _z(z), _name(name) {}
  Entity3D (const Entity3D &entidad);
  
  // Destructor
  ~Entity3D ();

  // Métodos de recuperación
  int getX () const;
  int getY () const;
  int getZ () const;
  string getName () const;
  
  
  void setX (const int x);
  void setY (const int y);
  void setZ (const int z);
  void setName (const string name);
  
  Entity3D& operator= (const Entity3D &e);
  string toString() const;

 private:
  // Atributos de la entidad
  string _name;
  int _x;
  int _y;
  int _z;
};

#endif
